﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ImobitechModel.com.Controller;
using ImobitechModel.com.Constantes;
using System.Text;

namespace Imobitech.Imovel
{
    public partial class CadastroImovel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ControladorImovel controladorImovel = new ControladorImovel();
                rptDependencias.DataSource = (IDictionary<string, string>)controladorImovel.retornaDependencias();
                rptDependencias.DataBind();
                carregarddlTipoImovel();
            }
        }

        private void carregarddlTipoImovel()
        {
            ControladorImovel cg = new ControladorImovel();
            ddlTipoImovel.DataSource = (Dictionary<int, string>)cg.retornaTipoImovel();
            ddlTipoImovel.DataTextField = "Value";
            ddlTipoImovel.DataValueField = "key";
            ddlTipoImovel.DataBind();
        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            IDictionary<string, string> imovel = new Dictionary<string, string>();

            imovel.Add(NomeCampoConstantes.campo_ImovelBairro, txtBairro.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelCidade, txtCidade.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelEndereco, txtEndereco.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelComplemento, txtComplemento.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelReferencia, txtReferencia.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelQuartos, txtQuartos.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelExisteSuite, txtSuite.Checked.ToString());
            imovel.Add(NomeCampoConstantes.campo_ImovelQuartosSuite, txtQuartosSuites.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelExisteGaragem, txtGaragem.Checked.ToString());
            imovel.Add(NomeCampoConstantes.campo_ImovelNumeroGaragem, txtNumeroGaragem.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelAreaTotal, txtAreaTotal.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelAreaPrivada, txtAreaPrivada.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelTipoAnuncio, rblTipo.SelectedValue);
            imovel.Add(NomeCampoConstantes.campo_ImovelEstado, txtEstado.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelTipoImovel, ddlTipoImovel.SelectedValue);

            imovel.Add(NomeCampoConstantes.campo_TipoImovelDescricao, txtDescricao.Text);
            imovel.Add(NomeCampoConstantes.campo_TipoImovelDescricaoCurta, txtDescricaocurta.Text);
            imovel.Add(NomeCampoConstantes.campo_TipoImovelValor, txtValor.Text);

            StringBuilder idDepedencias = new StringBuilder();
            foreach (RepeaterItem i in rptDependencias.Items)
            {
                CheckBox cb = (CheckBox)i.FindControl("CheckBoxDependencia");
                if (cb.Checked)
                {
                    HiddenField hdfDepedencias = (HiddenField)i.FindControl("CheckBoxDependenciaValue");
                    idDepedencias.AppendFormat(@"{0},", hdfDepedencias.Value);
                }
            }

            imovel.Add(NomeCampoConstantes.campo_dependencias, idDepedencias.ToString());

            Logar logar = (Logar)Session["login"];

            ControladorImovel cg = new ControladorImovel();
            int idImovel = (int)cg.inserirImovel(imovel, logar.idPessoa);

            HttpFileCollection hfc = Request.Files;
            List<string> fotos = new List<string>();
            for (int i = 0; i < hfc.Count; i++)
            {
                HttpPostedFile hpf = hfc[i];
                if (hpf.ContentLength > 0)
                {
                    string path = Server.MapPath("upload") + "\\" + idImovel + "\\";
                    System.IO.Directory.CreateDirectory(path);
                    hpf.SaveAs(path +
                      System.IO.Path.GetFileName(hpf.FileName));
                    fotos.Add(hpf.FileName);
                }
            }

            cg.inserirFotos(fotos, idImovel);
        }
    }
}